import re
s="aaa"
p="aa*a"
#方法1：就是遍历求解，但是没求出来，有些情况没考虑到
def isMatch(s,p):
    if s=="" and p=="":
        return True
    if (s=="" and p!="") or (s!="" and p==""):
        return False
    #两个操作指针，分别操作两个字符串:一个待处理字符串，一个规则串
    s_pointer,p_pointer=0,0
    while s_pointer<len(s) and p_pointer<len(p):
        if s[s_pointer]==p[p_pointer] or p[p_pointer]==".":
            #匹配成功
            #两个指针同时后移
            s_pointer+=1
            p_pointer+=1
        else:
            #无法直接断定是否匹配成功的情况
            if p[p_pointer]=="*":
                if p[p_pointer-1]==s[s_pointer] or p[p_pointer-1]==".":
                    #如果*前面的字符和当前s串中的一致，则也是匹配成功的
                    s_pointer+=1
                else:
                    #*前面的字符无法和当前串匹配，那么就往后走
                    p_pointer+=1
            else:
                #不是*字符  边界问题
                # if p[p_pointer+1]=="*":
                if p_pointer+1<len(p):   #必须保证后面还存在字符
                    if p[p_pointer+1]=="*":
                        #直接跳过两个字符
                        p_pointer+=2
                else:
                    #再有的情况就是两个串不匹配了
                    return False
    if p[p_pointer]=="*":
        p_pointer+=1
    if s_pointer>=len(s) and p_pointer>=len(p):
        return True
    else:
        return False
#直接调库来做
def isMatch_1(s,p):
    res_s=re.match(p,s)
    if res_s==None:
        return False
    else:
        if res_s.group()==s:
            return True
        else:
            return False
# print(isMatch(s,p))
print(isMatch(s,p))